<script setup lang="ts">
/*
需求：判断商品是否有货
颜色: 蓝色   黄色
尺寸：36     37     38
后端数据
  [
    {total:10,values:[{name:'蓝色'},{name:'36'}]},       
                  蓝色：有货   36:有货   蓝色&36:有货               
    {total:10,values:[{name:'蓝色'},{name:'37'}]},
                  蓝色：有货   37:有货   蓝色&37:有货 
    {total:10,values:[{name:'蓝色'},{name:'38'}]},
                  蓝色：有货   38:有货   蓝色&38:有货 
    {total:0,values:[{name:'黄色'},{name:'36'}]},
    {total:0,values:[{name:'黄色'},{name:'37'}]},
    {total:0,values:[{name:'黄色'},{name:'38'}]}
    ]
 数据字典： {
       蓝色：有货，
       36:有货
       37:有货
       38:有货
       蓝色&36:有货
       蓝色&37:有货
       蓝色&38:有货
    }
*/
import powerSet from '@/utils/power-set'
console.log(powerSet(['蓝色', '36', '中国']))

const arr = [
  { total: 10, values: [{ name: '蓝色' }, { name: '36' }] },
  { total: 10, values: [{ name: '蓝色' }, { name: '37' }] },
  { total: 10, values: [{ name: '蓝色' }, { name: '38' }] },
  { total: 0, values: [{ name: '黄色' }, { name: '36' }] },
  { total: 0, values: [{ name: '黄色' }, { name: '37' }] },
  { total: 0, values: [{ name: '黄色' }, { name: '38' }] }
]
// 数据字典
const pathObj: {
  [e: string]: boolean
} = {}
// 过滤没货的商品
const newArr = arr.filter(i => i.total > 0)
newArr.map(item => {
  // 将有货的商品进行遍历，
  // 将有货商品属性处理成一个只有属性值的数组
  const temp = item.values.map(i => i.name)
  // 得到一个有货属性集合的数组（所有有货的属性组合都列出来了）
  const tempArr = powerSet(temp).map(item2 => item2.join('&'))
  console.log(tempArr)
  // 将数组中有货属性组合添加到对象，去重，方便查询 ，产生数据字典
  tempArr.forEach(sub => {
    pathObj[sub] = true
  })

  // [蓝色,36,中国]  列出该数组的所有组合
})
console.log('pathObj', pathObj)
</script>
<template>
  <div>login</div>
  <hr />
</template>

<style></style>
